package model.caso;

import model.ladron.Ladron;
import model.lugares.Ciudad;
import model.lugares.CreadorDeMapa;
import model.lugares.MapaActual;

public class Caso {

	private Ladron ladron;
	private boolean esCasoCerrado=false;
	private CreadorDeMapa creadorMapa;
	
	public Caso(Ladron ladron) {
		this.ladron=ladron;
	}

	public Ladron getLadron() {
		return	ladron;
	}

	public boolean estaCerrado() {
		return esCasoCerrado;
	}

	public void cerrar() {
		esCasoCerrado=true;
	}
	
	//Esta funcion es llamada cuando el policia viaja a la ciudad correcta
	public MapaActual entregarNuevoMapa(MapaActual mapaViejo){
		Ciudad actualPolicia = ladron.getCiudadActual();
		if (ladron.yaNoViajaMas() == false){
			ladron.viajarProximaCiudad();
			creadorMapa = new CreadorDeMapa(actualPolicia, ladron.getCiudadActual());
			MapaActual mapa = creadorMapa.pedirMapaDeCuatroCiudades();
			return mapa;
		}
		return mapaViejo;//si el ladron no viaja mas devuelve el mismo mapa que antes
	}

	public OrdenDeArresto emitirOrdenDeArresto() {
		OrdenDeArresto orden = new OrdenDeArresto(ladron);
		return orden;
	}

	public boolean encontrasteAlLadron(Ciudad polCiudad, String tipoEdificio, OrdenDeArresto orden, Ladron ladronSospechoso) {
		if((polCiudad.compareTo(ladron.getCiudadActual())==0) && (tipoEdificio.compareTo(ladron.getEdificioFinal())==0) && (orden.arrestar(ladronSospechoso) == true))
			return true;
		return false;
	}

	public boolean seTeEscapoElLadron(Ciudad polCiudad, String tipoEdificio, OrdenDeArresto orden, Ladron ladronSospechoso) {
		if((polCiudad.compareTo(ladron.getCiudadActual())==0) && (tipoEdificio.compareTo(ladron.getEdificioFinal())==0) && (orden.arrestar(ladronSospechoso) != true))
			return true;
		return false;
	}

}
